﻿using System;
using System.Collections.Generic;

using SharedGenomics.Annotations;

namespace SharedGenomics.Workbench.Annotations
{
    public interface IAnnotationPlan
    {
        IEnumerable<AnnotationKey> GetPendingRequests();

        void NotifyRequestFinished(AnnotationKey requestKey);
        void NotifyRequestFailed(AnnotationKey requestKey);
        IAnnotationPlan Clone();

        /// <summary>
        /// Indicates that this plan has finished executing and no more requests are available
        /// </summary>
        bool IsComplete { get; }

        event EventHandler<AnnotationPlanRequestsFailedEventArgs> RequestsFailed;
        event EventHandler RequestsAvailable;
    }
}
